﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using Negocio = PSE.Tools.CadastroMensagens.Negocio;
using PSE.Tools.Util.Entidades;

namespace PSE.Tools.CadastroMensagens.Apresentacao
{
    public class Produtos
    {
        private IApresentacao _apresentacao;
        private PSE.Tools.CadastroProdutos.Negocio.Produtos _negocioProdutos;
        public Produtos(IApresentacao apresentacao, PSE.Tools.CadastroProdutos.Negocio.Produtos negocioProdutos)
        {
            _apresentacao = apresentacao;
            _negocioProdutos = negocioProdutos;
        }

        public PSE.Tools.CadastroProdutos.Entidades.Produto Obter(int id)
        {
            try
            {
                return _negocioProdutos.ObterPorId(id);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
                return null;
            }
        }

        public IList<PSE.Tools.CadastroProdutos.Entidades.Produto> Lista()
        {
            try
            {
                return _negocioProdutos.Selecionar();
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
                return null;
            }
        }

        public bool Inserir(PSE.Tools.CadastroProdutos.Entidades.Produto produto)
        {
            bool retorno = false;
            try
            {
                _negocioProdutos.Inserir(produto);
                _apresentacao.EnviarMensagem("Produto Inserido com Sucesso");
                retorno = true;
            }
            catch (ValidacaoEntidadeException ex)
            {
                _apresentacao.EnviarMensagemValidacao(ex.Validacoes);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
            }
            return retorno;
        }

        public bool Atualizar(PSE.Tools.CadastroProdutos.Entidades.Produto Produto)
        {
            bool retorno = false;
            try
            {
                _negocioProdutos.Atualizar(Produto);
                _apresentacao.EnviarMensagem("Produto Atualizado com Sucesso");
                retorno = true;
            }
            catch (ValidacaoEntidadeException ex)
            {
                _apresentacao.EnviarMensagemValidacao(ex.Validacoes);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
            }
            return retorno;
        }

        public bool Excluir(PSE.Tools.CadastroProdutos.Entidades.Produto Produto)
        {
            bool retorno = false;
            try
            {
                _negocioProdutos.Excluir(Produto);
                _apresentacao.EnviarMensagem("Produto Excluído com Sucesso");
                retorno = true;
            }
            catch (ValidacaoEntidadeException ex)
            {
                _apresentacao.EnviarMensagemValidacao(ex.Validacoes);
            }
            catch (Exception ex)
            {
                _apresentacao.EnviarMensagemErro(ex.Message);
            }
            return retorno;
        }
    }
}
